package com.dpteam.dao;

import com.dpteam.model.RejectOrder;
import com.dpteam.util.Page;

import java.time.LocalDate;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: luolei
 * Date: 2016/1/7
 * Time: 16:46
 */
public interface RejectOrderDao extends BaseDao<RejectOrder> {

    /**
     * 查询所有退货订单
     *
     * @return
     */
    List<RejectOrder> findAllRejectOrder();

    /**
     * 查询所有退货订单（分页）
     *
     * @param page
     * @return
     */
    List<RejectOrder> findAllRejectOrderPage(Page page);

    /**
     * 根据收银员查询所有退货订单
     *
     * @param userId
     * @return
     */
    List<RejectOrder> findByUser(int userId);

    /**
     * 根据收银员查询所有退货订单（分页）
     *
     * @param userId
     * @param page
     * @return
     */
    List<RejectOrder> findByUserPage(int userId, Page page);

    /**
     * 根据商品查询所有退货订单
     *
     * @param productId
     * @return
     */
    List<RejectOrder> findByProduct(int productId);

    /**
     * 根据商品查询所有退货订单（分页）
     *
     * @param productId
     * @param page
     * @return
     */
    List<RejectOrder> findByProductPage(int productId, Page page);

    /**
     * 根据退货时间段查询所有退货订单
     *
     * @param timeBegin
     * @param timeEnd
     * @return
     */
    List<RejectOrder> findByTime(LocalDate timeBegin, LocalDate timeEnd);

    /**
     * 根据退货时间段查询所有退货订单（分页）
     *
     * @param timeBegin
     * @param timeEnd
     * @param page
     * @return
     */
    List<RejectOrder> findByTimePage(LocalDate timeBegin, LocalDate timeEnd, Page page);

    /**
     * 根据退货收银员和时间段查询所有退货订单
     *
     * @param timeBegin
     * @param timeEnd
     * @return
     */
    List<RejectOrder> findByUserIdAndTime(int userId, LocalDate timeBegin, LocalDate timeEnd);

    /**
     * 根据退货收银员和时间段查询所有退货订单（分页）
     *
     * @param timeBegin
     * @param timeEnd
     * @return
     */
    List<RejectOrder> findByUserIdAndTimePage(int userId, LocalDate timeBegin, LocalDate timeEnd, Page page);

    void deleteById(int id);

    double sumProfit(int year);

    double sumProfit(int year, int month);

    double sumProfit(int year, int month, int categoryId);

    double sumSell(int year);

    double sumSell(int year, int month);

    double sumSell(int year, int month, int categoryId);


}
